package exercise;

import java.util.Scanner;

// 성적데이터를 Scanner 클래스로 입력받고
// 총점, 평균, 학점을 계산한 후 그 결과를 SungJukVO에 저장하고
// SungJukDAO로 그것을 넘김

public class EX01_SungJukService implements EX01_ISungJukService {
	
	private EX01_SungJukVO s = null;
	private EX01_ISungJukDAO sdao =null;
	public EX01_SungJukService() {
		sdao = new EX01_SungJukDAO();
		s = new EX01_SungJukVO();
	}
	
	@Override
	public void createSungJuk() {
		System.out.println("성적 입력");
		
		Scanner sc = new Scanner(System.in);		
		
		System.out.println("이름을 입력하세요.");
		s.setName(sc.next());
		do {
		System.out.println("국어점수를 입력하세요.");
		s.setKor(sc.nextInt());
		}
		while(s.getKor() < 0 || s.getKor() > 100);
		System.out.println("영어점수를 입력하세요.");
		s.setEng(sc.nextInt());
		System.out.println("수학점수를 입력하세요.");
		s.setMat(sc.nextInt());
		
		this.computeTot();
		this.computeAvg();
		this.computeGrd();
		
		if (sdao.insertSungJuk(s)) {
			System.out.println("==========================================================");
			System.out.println("국어 : " + s.getKor() + " / 영어 : " + s.getEng() + " / 수학 : " + s.getMat());
			System.out.println("총점 : " + s.getTot() + " / 평균 : " + s.getAvg());
			System.out.println("학점 : " + s.getGrd());
			System.out.println("==========================================================");
		} else {
			System.out.println("정보 입력 실패");
		}
	} // createSungJuk
	
	@Override
	public void computeTot() {
		s.setTot(s.getKor() + s.getEng() + s.getMat());
	}
	@Override
	public void computeAvg() {		
		s.setAvg(s.getTot()/3F);
	}
	@Override
	public void computeGrd() {
		String r = "";
		switch ((int)(s.getAvg()/10)) {
		case 10: case 9:
			r = "A"; break;
		case 8:
			r = "B"; break;
		case 7:
			r = "C"; break;
		case 6:
			r = "D"; break;
		default:
			r = "F";
		}
		s.setGrd(r);
	}

	@Override
	public void readSungJuk() {
		System.out.println("==========================================================");
		for (EX01_SungJukVO s : sdao.selectSungJuk()){
			System.out.print(s.getSjno());
			System.out.print("\t");
			System.out.print(s.getName());
			System.out.print("\t");
			System.out.print(s.getKor());
			System.out.print("\t");
			System.out.print(s.getEng());
			System.out.print("\t");
			System.out.print(s.getMat());
			System.out.print("\t");
			System.out.print(s.getTot());
			System.out.print("\t");
			System.out.print(s.getAvg());
			System.out.print("\t");
			System.out.println(s.getGrd());			
		}
		System.out.println("==========================================================");
	}

	@Override
	public void showMenu() {
		Scanner sc = new Scanner(System.in);						
		System.out.println("=== 성적 관리 프로그램 ===");
		while (true) {
			System.out.println("-----메뉴-----");
			System.out.println("1. 성적 입력");
			System.out.println("2. 성적 조회");
			System.out.println("3. 성적 수정");
			System.out.println("4. 성적 삭제");
			System.out.println("0. 종  료");
			System.out.println("-------------");
			System.out.print("메뉴 선택 > ");
			switch (sc.nextInt()) {
			case 1:
				this.createSungJuk();
				break;
			case 2:
				this.readSungJuk();
				break;
			case 3:
				this.modifySungJuk();
				break;
			case 4:
				this.removeSungJuk();
				break;
			case 0:
				System.out.println("종료 됩니다.");
				System.exit(0);
			default :
				System.out.println("올바른 메뉴를 선택하세요.");			
			}	
		}
		
		
		
		
	}

	@Override
	public void modifySungJuk() {
		this.readSungJuk();
		Scanner sc = new Scanner(System.in);
		
		System.out.println("수정 할 학생 번호를 입력하세요.");
		s.setSjno(sc.next());
		System.out.println("수정 할 학생의 이름을 입력하세요.");
		s.setName(sc.next());
		System.out.println("수정 할 학생의 국어 점수를 입력하세요.");
		s.setKor(sc.nextInt());
		System.out.println("수정 할 학생의 영어 점수를 입력하세요.");
		s.setEng(sc.nextInt());
		System.out.println("수정 할 학생의 수학 점수를 입력하세요.");
		s.setMat(sc.nextInt());
		
		this.computeTot();
		this.computeAvg();
		this.computeGrd();
		s.setTot(s.getTot());
		s.setAvg(s.getAvg());
		s.setGrd(s.getGrd());
		
		if (sdao.updateSungJuk(s)) {
			System.out.println("수정 성공");
		} else {
			System.out.println("수정 실패");
		}
		
	}

	@Override
	public void removeSungJuk() {
		this.readSungJuk();
		Scanner sc = new Scanner(System.in);
		
		System.out.println("삭제 할 학생 번호를 입력하세요.");
		s.setSjno(sc.next());
		
		if (sdao.deleteSungJuk(s)) {
			System.out.println("삭제 성공");
		} else {
			System.out.println("삭제 실패");
		}
		
	}

}
